import sympy
e = 65537
def random_pq():
    while True:
        p = sympy.randprime(1000,5000) #随机生成1000-5000内的两个素数
        q = sympy.randprime(1000,5000)
        if p!=q:
            return p,q
def get_d(m):
    e = 65537#满足条件的e很多，如果一个一个算，这一步会耗费大量时间，通常我们会让 e=65537，至于为什么，可以参考这篇文章https://www.johndcook.com/blog/2018/12/12/rsa-exponent/
    for d in range(2, m):
        if d*e % m == 1:#e关于m的模逆元，命名为d
            return d 
p,q = random_pq()#准备的两个素数
n = p*q#大数n
m = (p-1)*(q-1)#n的欧拉函数计算所得值
d = get_d(m)
d
